package com.shbaiche.bifenba.model.base;


import com.shbaiche.bifenba.model.data.CompeteGroupMessage;
import com.shbaiche.bifenba.model.data.CompeteMatchesMessage;
import com.shbaiche.bifenba.model.data.ShooterMessage;
import com.shbaiche.bifenba.model.data.StandingMessage;
import com.shbaiche.bifenba.model.data.TeamDynamicMessage;
import com.shbaiche.bifenba.model.data.TeamFollowMessage;
import com.shbaiche.bifenba.model.data.TeamInfoMessage;
import com.shbaiche.bifenba.model.data.TeamRankMessage;
import com.shbaiche.bifenba.model.match.EaseChatMessage;
import com.shbaiche.bifenba.model.match.EasePhotoMessage;
import com.shbaiche.bifenba.model.match.EaseRegisterMessage;
import com.shbaiche.bifenba.model.match.EaseSendMessage;
import com.shbaiche.bifenba.model.match.EaseTokenMessage;
import com.shbaiche.bifenba.model.match.MatchesAnalyseMessage;
import com.shbaiche.bifenba.model.match.MatchesGuessMessage;
import com.shbaiche.bifenba.model.match.MatchesInfoMessage;
import com.shbaiche.bifenba.model.match.MatchesLineupMessage;
import com.shbaiche.bifenba.model.match.MatchesListMessage;
import com.shbaiche.bifenba.model.match.MatchesOutsMessage;
import com.shbaiche.bifenba.model.match.OddsInfoMessage;
import com.shbaiche.bifenba.model.user.AboutMessage;
import com.shbaiche.bifenba.model.user.FavariteMessage;
import com.shbaiche.bifenba.model.user.FollowCancelMessage;
import com.shbaiche.bifenba.model.user.FollowListMessage;
import com.shbaiche.bifenba.model.user.FollowUpdateMessage;
import com.shbaiche.bifenba.model.user.LoginMessage;
import com.shbaiche.bifenba.model.user.MyDiscussMessage;
import com.shbaiche.bifenba.model.user.MyFollowMessage;
import com.shbaiche.bifenba.model.user.ShareMessage;
import com.shbaiche.bifenba.model.user.UserCommentMessage;
import com.shbaiche.bifenba.model.user.UserInfoMessage;
import com.shbaiche.bifenba.model.video.ArticleCollectMessage;
import com.shbaiche.bifenba.model.video.ArticleDetailMessage;
import com.shbaiche.bifenba.model.video.ArticleGroupListMessage;
import com.shbaiche.bifenba.model.video.ArticleListMessage;
import com.shbaiche.bifenba.model.video.ArticleShareMessage;
import com.shbaiche.bifenba.model.video.AuthorMessage;
import com.shbaiche.bifenba.model.video.CustomMessage;
import com.shbaiche.bifenba.model.video.DiscussAddMessage;
import com.shbaiche.bifenba.model.video.DiscussFollowMessage;
import com.shbaiche.bifenba.model.video.DiscussListMessage;
import com.shbaiche.bifenba.model.video.HotMatchesMessage;

/**
 * <pre>
 * 客户端交易类型
 * </pre>
 */
public enum TransType {
    /*----------------------- 用户相关 ------------------------*/


    /**
     * 登录
     */
    Login(LoginMessage.class, LoginMessage.class),

    // 关于
    About(AboutMessage.class, AboutMessage.class),
    // 反馈
    UserComment(UserCommentMessage.class, UserCommentMessage.class),
    // 我的收藏
    MyFavorite(FavariteMessage.class, FavariteMessage.class),
    //用户头像上传
    UploadPhoto(LoginMessage.class, LoginMessage.class),
    // 修改昵称
    UpdateNickName(LoginMessage.class, LoginMessage.class),
    // 用户信息
    UserInfo(UserInfoMessage.class, UserInfoMessage.class),
    // 修改昵称
    UpdateSex(LoginMessage.class, LoginMessage.class),
    // 我的评论
    MyDiscuss(MyDiscussMessage.class, MyDiscussMessage.class),
    // 分享
    Share(ShareMessage.class, ShareMessage.class),
    // 视频文章分享
    ArticleShare(ArticleShareMessage.class, ArticleShareMessage.class),

    // 我的关注(球队/赛事)
    MyFollow(MyFollowMessage.class, MyFollowMessage.class),
    // 修改关注(球队)
    FollowUpdate(FollowUpdateMessage.class, FollowUpdateMessage.class),
    // 可关注列表(球队)
    FollowList(FollowListMessage.class, FollowListMessage.class),
    // 单个取消关注
    FollowCancel(FollowCancelMessage.class, FollowCancelMessage.class),

    // 资讯或视频分组
    ArticleGroupList(ArticleGroupListMessage.class, ArticleGroupListMessage.class),

    // 资讯或视频列表
    ArticleList(ArticleListMessage.class, ArticleListMessage.class),
    // 资讯或视频详情
    ArticleDetail(ArticleDetailMessage.class, ArticleDetailMessage.class),

    // 比分/积分赛事分组
    CompeteGroup(CompeteGroupMessage.class, CompeteGroupMessage.class),
    // 资讯或视频收藏
    ArticleCollect(ArticleCollectMessage.class, ArticleCollectMessage.class),
    // 发表评论
    ArticleDiscussAdd(DiscussAddMessage.class, DiscussAddMessage.class),
    // 评论列表
    ArticleDiscussList(DiscussListMessage.class, DiscussListMessage.class),
    // 评论点赞
    ArticleDiscussFollow(DiscussFollowMessage.class, DiscussFollowMessage.class),
    // 发布人详情
    AuthorDetail(AuthorMessage.class, AuthorMessage.class),

    // 热门赛事
    HotMatches(HotMatchesMessage.class, HotMatchesMessage.class),
    // 我的定制
    MyCustom(CustomMessage.class, CustomMessage.class),


    // 积分
    Standing(StandingMessage.class, StandingMessage.class),

    // 比赛列表
    MatchesList(MatchesListMessage.class, MatchesListMessage.class),

    // 比赛阵容
    MatchesLineup(MatchesLineupMessage.class, MatchesLineupMessage.class),

    // 比赛详情
    MatchesInfo(MatchesInfoMessage.class, MatchesInfoMessage.class),

    // 比赛赛况
    MatchesOuts(MatchesOutsMessage.class, MatchesOutsMessage.class),

    // 比赛分析
    MatchesAnalyse(MatchesAnalyseMessage.class, MatchesAnalyseMessage.class),

    // 比赛竞猜支持
    MatchesGuess(MatchesGuessMessage.class, MatchesGuessMessage.class),

    // 比赛赔率
    OddsInfo(OddsInfoMessage.class, OddsInfoMessage.class),

    // 球队详情
    TeamInfo(TeamInfoMessage.class, TeamInfoMessage.class),

    // 球队动态
    TeamDynamic(TeamDynamicMessage.class, TeamDynamicMessage.class),

    // 关注球队/赛事
    TeamFollow(TeamFollowMessage.class, TeamFollowMessage.class),

    // 数据--球员榜
    PlayerRank(ShooterMessage.class, ShooterMessage.class),

    // 数据--球队榜
    TeamRank(TeamRankMessage.class, TeamRankMessage.class),

    // 数据--赛程
    CompeteMatches(CompeteMatchesMessage.class, CompeteMatchesMessage.class),

    // 环信Toke
    EaseToken(EaseTokenMessage.class, EaseTokenMessage.class),

    // 环信用户注册
    EaseRegister(EaseRegisterMessage.class, EaseRegisterMessage.class),

    // 环信聊天室
    EaseChat(EaseChatMessage.class, EaseChatMessage.class),

    // 聊天室用户昵称、头像获取
    EasePhoto(EasePhotoMessage.class, EasePhotoMessage.class),

    // 发送消息
    EaseSend(EaseSendMessage.class, EaseSendMessage.class),

    /**
     * 手机验证发送短信验证码
     */
    SendSms(LoginMessage.class, LoginMessage.class);


    private Class<?> requestType;

    private Class<?> responseType;

    TransType(Class<?> requestType, Class<?> responseType) {
        this.responseType = responseType;
        this.requestType = requestType;
    }

    public Class<?> getRequestType() {
        return requestType;
    }

    public Class<?> getResponseType() {
        return responseType;
    }


}
